package com.example.mes;

import cn.hutool.json.JSONObject;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author hej
 * @date 2025/4/22 18:49
 */
public class Mes {
    public static void main(String[] args) throws Exception {
        //获取路由
        new Mes().checkRoute();

        //自动过站
        new Mes().autoPassStation();
    }

    /**
     * 校验路由
     */
    public void checkRoute(){
        String url = "https://paasapi-vncmes.ces.myfiinet.com/platform-datahub/client/passive/revicedata/getRouteBySn";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("sn", "PYGQN0HM0KW0V8");
        jsonObject.put("orgCode", "CABG_VN");
        RestTemplate restTemplate=new RestTemplate();
        cn.hutool.json.JSONObject body = restTemplate.postForEntity(url, jsonObject, JSONObject.class).getBody();
        System.out.println(body);
    }

    /**
     * 设备过站
     * @throws Exception
     */
    public void autoPassStation() throws Exception {
        String url = "https://api-vncmes.ces.myfiinet.com/cloudmes-mes/feign/dataDeviceApi/autoPassStation";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("empNo", "MC00281");
        jsonObject.put("result", "PASS");
        jsonObject.put("sn", "DELL2024051400036");
        jsonObject.put("snType", "SN");
        jsonObject.put("stationId", "AOI-001");
        jsonObject.put("orgCode", "CABG_VN");
        List<Object> imei = new ArrayList<>();
        Map<String, String> imeiMap = new HashMap<>();
        imeiMap.put("imei1", "123");
        imeiMap.put("imei2", "abc");
        imei.add(imeiMap);
        jsonObject.put("eqpParams", imei);
        RestTemplate restTemplate=new RestTemplate();
        cn.hutool.json.JSONObject body = restTemplate.postForEntity(url, jsonObject, JSONObject.class).getBody();
        System.out.println(body);
    }

    class AutoPassStationParam{
        /** 产品序号 */
        private String sn;

        /** SN类型(MAC,SAS,GUID…,SN) */
        private String snType;

        /** 机台代码 */
        private String stationId;

        /** 工站ID */
        private Integer processId;

        /** 员工代码 */
        private String empNo;

        /** 测试结果(PASS,FAIL,START) */
        private String result;

        /** 失败原因 */
        private String failureReason;

        /** 不良位置 */
        private String loc;

        /** 不良代码 */
        private String errCode;

        /** 测试机台不良点数 */
        private Integer testFailQty;

        /** 实际不良点数 */
        private Integer badQty;

        /** mac */
        private String mac;

        /** wwn */
        private String wwn;

        /** sas */
        private String sas;

        /** guid */
        private String guid;

        /** 固资编码 */
        private String assetid;

        /** 手机移动识别码 */
        private Integer imei;

        /** uut */
        private String uut;

        /** slot */
        private String slot;

        /** dmi */
        private String dmi;

        /** fail详细信息 */
        private String failDesc;

        /** 文件名称 */
        private String logFilename;

        /** 固件版本 */
        private String firmwareRev;

        /** 测试程式版本 */
        private String programRev;

        /** 测试脚本版本 */
        private String diagsRev;

        /** 主板bios版本 */
        private String biosRev;

        /** UUT_REV版本 */
        private String uutRev;

        /** BMC版本 */
        private String bmcversion;

        /** 零件SN */
        private String kpSn;

        /** 备注 */
        private String remark;

        /** 权限组织 */
        private String orgCode;

        /** 自动过站参数列表 */
        private List<SnEqpParamsRecordDTO> eqpParams;

        /** 测试参数 */
        private String testParam;

        /** zip测试文件名称 */
        private String zipFileName;

        /** tgz测试文件名称 */
        private String tgzFileName;

        /** 主板SN */
        private String mbSn;

        /** 部件 */
        private String components;

        /** 采集数据 */
        private String collectingData;

        /** GIT ASN 数据 */
        private String gitAsnData;

        /** 测试项FAIL开始时间 */
        private String testItemFailStartDate;

        /** 测试项FAIL结束时间 */
        private String testItemFailEndDate;

        /** 测试项FAIL测试cycle */
        private String testItemFailCycle;

        /** 测试项FAIL测试步骤 */
        private String testItemFailStep;

        /** 测试项FAIL测试大项 */
        private String testMajorItem;
    }

    class SnEqpParamsRecordDTO{
        /** 参数编码 */
        private String paramCode;

        /** 参数值 */
        private String value;
    }
}
